import { IPSAppDEUIActionGroupDetail } from '../../app/dataentity/ipsapp-deuiaction-group-detail';
import { IPSDEUIActionGroupDetail } from './ipsdeuiaction-group-detail';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysCss } from '../../res/ipssys-css';
import { IPSSysImage } from '../../res/ipssys-image';
import { IPSUIAction } from '../../view/ipsuiaction';
import { PSModelObjectImpl } from '../../psmodel-object-impl';

export class PSDEUIActionGroupDetailImpl extends PSModelObjectImpl implements IPSDEUIActionGroupDetail, IPSAppDEUIActionGroupDetail {
  get actionLevel(): 50 | 100 | 200 | 250 {
    return this.M.actionLevel != null ? this.M.actionLevel : 100;
  }

  get afterContent(): string {
    return this.M.afterContent;
  }

  get afterItemType(): 'NONE' | 'RAW' {
    return this.M.afterItemType || 'NONE';
  }

  protected afterpslanguageres: IPSLanguageRes | null = null;

  getAfterPSLanguageRes(): IPSLanguageRes | null {
    if (this.afterpslanguageres != null) return this.afterpslanguageres;
    const value = this.M.getAfterPSLanguageRes;
    if (value == null) {
      return null;
    }
    this.afterpslanguageres = this.getPSModel4('res.IPSLanguageRes', value, 'getAfterPSLanguageRes') as IPSLanguageRes;
    return this.afterpslanguageres;
  }

  get afterPSLanguageRes(): IPSLanguageRes | null {
    return this.getAfterPSLanguageRes();
  }

  getAfterPSLanguageResMust(): IPSLanguageRes {
    const value = this.getAfterPSLanguageRes();
    if (value == null) {
      throw new Error('未指定后置内容语言资源对象');
    }
    return value;
  }

  protected afterpssyscss: IPSSysCss | null = null;

  getAfterPSSysCss(): IPSSysCss | null {
    if (this.afterpssyscss != null) return this.afterpssyscss;
    const value = this.M.getAfterPSSysCss;
    if (value == null) {
      return null;
    }
    this.afterpssyscss = this.getPSModel4('res.IPSSysCss', value, 'getAfterPSSysCss') as IPSSysCss;
    return this.afterpssyscss;
  }

  get afterPSSysCss(): IPSSysCss | null {
    return this.getAfterPSSysCss();
  }

  getAfterPSSysCssMust(): IPSSysCss {
    const value = this.getAfterPSSysCss();
    if (value == null) {
      throw new Error('未指定后置内容界面样式表');
    }
    return value;
  }

  get beforeContent(): string {
    return this.M.beforeContent;
  }

  get beforeItemType(): 'NONE' | 'RAW' {
    return this.M.beforeItemType || 'NONE';
  }

  protected beforepslanguageres: IPSLanguageRes | null = null;

  getBeforePSLanguageRes(): IPSLanguageRes | null {
    if (this.beforepslanguageres != null) return this.beforepslanguageres;
    const value = this.M.getBeforePSLanguageRes;
    if (value == null) {
      return null;
    }
    this.beforepslanguageres = this.getPSModel4('res.IPSLanguageRes', value, 'getBeforePSLanguageRes') as IPSLanguageRes;
    return this.beforepslanguageres;
  }

  get beforePSLanguageRes(): IPSLanguageRes | null {
    return this.getBeforePSLanguageRes();
  }

  getBeforePSLanguageResMust(): IPSLanguageRes {
    const value = this.getBeforePSLanguageRes();
    if (value == null) {
      throw new Error('未指定前置内容语言资源对象');
    }
    return value;
  }

  protected beforepssyscss: IPSSysCss | null = null;

  getBeforePSSysCss(): IPSSysCss | null {
    if (this.beforepssyscss != null) return this.beforepssyscss;
    const value = this.M.getBeforePSSysCss;
    if (value == null) {
      return null;
    }
    this.beforepssyscss = this.getPSModel4('res.IPSSysCss', value, 'getBeforePSSysCss') as IPSSysCss;
    return this.beforepssyscss;
  }

  get beforePSSysCss(): IPSSysCss | null {
    return this.getBeforePSSysCss();
  }

  getBeforePSSysCssMust(): IPSSysCss {
    const value = this.getBeforePSSysCss();
    if (value == null) {
      throw new Error('未指定前置内容界面样式表');
    }
    return value;
  }

  protected cappslanguageres: IPSLanguageRes | null = null;

  getCapPSLanguageRes(): IPSLanguageRes | null {
    if (this.cappslanguageres != null) return this.cappslanguageres;
    const value = this.M.getCapPSLanguageRes;
    if (value == null) {
      return null;
    }
    this.cappslanguageres = this.getPSModel4('res.IPSLanguageRes', value, 'getCapPSLanguageRes') as IPSLanguageRes;
    return this.cappslanguageres;
  }

  get capPSLanguageRes(): IPSLanguageRes | null {
    return this.getCapPSLanguageRes();
  }

  getCapPSLanguageResMust(): IPSLanguageRes {
    const value = this.getCapPSLanguageRes();
    if (value == null) {
      throw new Error('未指定标题语言资源对象');
    }
    return value;
  }

  get caption(): string {
    return this.M.caption;
  }

  get codeName(): string {
    return this.M.codeName;
  }

  get detailTag(): string {
    return this.M.detailTag;
  }

  get detailTag2(): string {
    return this.M.detailTag2;
  }

  get detailType(): 'DEUIACTION' {
    return this.M.detailType;
  }

  get dynaModelFilePath(): string {
    return this.M.dynaModelFilePath;
  }

  get memo(): string {
    return this.M.memo;
  }

  get name(): string {
    return this.M.name;
  }

  protected pssyscss: IPSSysCss | null = null;

  getPSSysCss(): IPSSysCss | null {
    if (this.pssyscss != null) return this.pssyscss;
    const value = this.M.getPSSysCss;
    if (value == null) {
      return null;
    }
    this.pssyscss = this.getPSModel4('res.IPSSysCss', value, 'getPSSysCss') as IPSSysCss;
    return this.pssyscss;
  }

  get psSysCss(): IPSSysCss | null {
    return this.getPSSysCss();
  }

  getPSSysCssMust(): IPSSysCss {
    const value = this.getPSSysCss();
    if (value == null) {
      throw new Error('未指定界面行为界面样式表');
    }
    return value;
  }

  protected pssysimage: IPSSysImage | null = null;

  getPSSysImage(): IPSSysImage | null {
    if (this.pssysimage != null) return this.pssysimage;
    const value = this.M.getPSSysImage;
    if (value == null) {
      return null;
    }
    this.pssysimage = this.getPSModel4('res.IPSSysImage', value, 'getPSSysImage') as IPSSysImage;
    return this.pssysimage;
  }

  get psSysImage(): IPSSysImage | null {
    return this.getPSSysImage();
  }

  getPSSysImageMust(): IPSSysImage {
    const value = this.getPSSysImage();
    if (value == null) {
      throw new Error('未指定界面行为图标资源');
    }
    return value;
  }

  protected psuiaction: IPSUIAction | null = null;

  getPSUIAction(): IPSUIAction | null {
    if (this.psuiaction != null) return this.psuiaction;
    const value = this.M.getPSUIAction;
    if (value == null) {
      return null;
    }
    this.psuiaction = this.getPSModel4('view.IPSUIAction', value, 'getPSUIAction') as IPSUIAction;
    return this.psuiaction;
  }

  get psUIAction(): IPSUIAction | null {
    return this.getPSUIAction();
  }

  getPSUIActionMust(): IPSUIAction {
    const value = this.getPSUIAction();
    if (value == null) {
      throw new Error('未指定界面行为对象');
    }
    return value;
  }

  get tooltip(): string {
    return this.M.tooltip;
  }

  protected tooltippslanguageres: IPSLanguageRes | null = null;

  getTooltipPSLanguageRes(): IPSLanguageRes | null {
    if (this.tooltippslanguageres != null) return this.tooltippslanguageres;
    const value = this.M.getTooltipPSLanguageRes;
    if (value == null) {
      return null;
    }
    this.tooltippslanguageres = this.getPSModel4('res.IPSLanguageRes', value, 'getTooltipPSLanguageRes') as IPSLanguageRes;
    return this.tooltippslanguageres;
  }

  get tooltipPSLanguageRes(): IPSLanguageRes | null {
    return this.getTooltipPSLanguageRes();
  }

  getTooltipPSLanguageResMust(): IPSLanguageRes {
    const value = this.getTooltipPSLanguageRes();
    if (value == null) {
      throw new Error('未指定提示语言资源对象');
    }
    return value;
  }

  get uIActionParamJO(): IModel {
    return this.M.uIActionParamJO;
  }

  get userCat(): string {
    return this.M.userCat;
  }

  get userTag(): string {
    return this.M.userTag;
  }

  get userTag2(): string {
    return this.M.userTag2;
  }

  get userTag3(): string {
    return this.M.userTag3;
  }

  get userTag4(): string {
    return this.M.userTag4;
  }

  get addSeparator(): boolean {
    return this.M.addSeparator;
  }

  get showCaption(): boolean {
    return this.M.showCaption;
  }

  get showIcon(): boolean {
    return this.M.showIcon;
  }

  get cls(): string {
    return 'PSDEUIActionGroupDetailImpl';
  }

  instanceof(cls: string): boolean {
    if (cls == 'app.dataentity.IPSAppDEUIActionGroupDetail' || cls == 'dataentity.uiaction.IPSDEUIActionGroupDetail' || cls == 'view.IPSUIActionGroupDetail') return true;
    return super.instanceof(cls);
  }
}
